package com.anyou.mall.goo.goods.service;

import java.util.List;

import com.anyou.mall.goo.goods.domain.GooGoods;
import com.anyou.mall.goo.goods.dto.GoodsOperationDTO;
import com.anyou.mall.goo.goods.dto.GoodsSearchParams;
import com.anyou.mall.goo.goods.vo.GoodsVO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * goodsService接口
 * 
 * @author xiaQ
 * @date 2023-09-15
 */
public interface ILiGoodsService extends IService<GooGoods>
{
    /**
     * 查询商品VO
     *
     * @param id 商品id
     * @return 商品VO
     */
    public GoodsVO selectLiGoodsById(Long id);

    /**
     * 查询goods列表
     * 
     * @param  goodsSearchParams
     * @return goods集合
     */
    public List<GooGoods> selectLiGoodsList(GoodsSearchParams goodsSearchParams);

    /**
     * 新增goods
     * 
     * @param  goodsOperationDTO
     * @return 结果
     */
    public int insertLiGoods(GoodsOperationDTO goodsOperationDTO);

    /**
     * 更新商品上架状态状态
     *
     * @param goodsIds        商品ID集合
     * @param goodsStatusEnum 更新的商品状态
     * @param underReason     下架原因
     * @return 更新结果
     */
    Boolean upAndDownGoods(List<String> goodsIds,String goodsStatusEnum );

    /**
     * 修改商品库存数量
     *
     * @param goodsId  商品ID
     * @param quantity 库存数量
     */
    void updateStock(Long goodsId, Integer quantity);

    /**
     * 修改goods
     *
     * @param goodsOperationDTO 商品查询条件
     * @return 结果
     */
    public int updateLiGoods(GoodsOperationDTO goodsOperationDTO);

    /**
     * 批量删除goods
     * 
     * @param ids 需要删除的goods主键集合
     * @return 结果
     */
    public int deleteLiGoodsByIds(Long[] ids);

    /**
     * 删除goods信息
     * 
     * @param id goods主键
     * @return 结果
     */
    public int deleteLiGoodsById(Long id);
}
